As a growing number of applications and services are being made available over networks such as the Internet, an increasing number of content, application, and/or service providers are turning to technologies, such as cloud computing, that enable multiple users to share electronic resources. Access to these electronic resources is often provided through services, such as Web services, where the hardware and/or software used to support those services are dynamically scalable to meet the needs of the services at any given time. A user or customer typically will rent, lease, or otherwise pay for access to resources through the cloud, and thus does not have to purchase and maintain the hardware and/or software for these resources.
In some cloud computing or multi-tenant environments, a greater number of requests for access to shared electronic resources will be made at certain times than the resources can process, which may result in slow service or no service at all for users. One conventional approach for resolving contention among users for a shared resource is to limit the rate at which users can make requests or “throttle” user requests for the shared resource. Throttling, however, may be inflexible in certain circumstances. For example, a user may have an urgent request but a system that implements throttling may not allow the user to differentiate the priority of her request over other requests. Another conventional approach, which can be characterized as prioritization-based, may allow users to define the priority of their requests to a certain extent. For instance, users may be able to associate requests with varying levels of priority, and when there is contention for a shared resource, the resource provider can process a request according to the priority level corresponding with the request. Priority levels may be based upon any number of user-specifiable characteristics, such as the identity of the user (e.g., users may purchase guaranteed levels of service), processing requirements (e.g., requests with lower processing requirements may be given higher priority), or the type of the request (e.g., real-time sensitive requests, such as those relating to IP telephony or videoconferencing can be designated as higher priority). However, reasonable prioritization-based policies may be difficult to construct when there are many self-interested users. In addition, prioritization-based schemes may not be suitable when users are similarly situated and/or making similar types of requests.